package com.efast.dmom.mgmt.dao.mes;


import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.efast.dmom.mgmt.bean.mes.InfPpPlan;
import com.efast.dmom.mgmt.bean.mes.TwProductionSplitDto;
import com.efast.dmom.mgmt.entity.mes.TwProductionPlan;
import com.efast.dmom.mgmt.utils.Assist;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author ChenLiPeng
 * @since 2018-06-20
 */
public interface TwProductionPlanMapper extends BaseMapper<TwProductionPlan> {

	TwProductionSplitDto selectByTwPlanSplitId(@Param("twPlanSplitId")Integer twPlanSplitId);
	
	void updateSort(List<Map<String,Object>> list);
	void updatePlanAdjust(List<Map<String,Object>> list);
	void updateplanApproval(List<Map<String,Object>> list);
	void updatePlanFreeze(List<Map<String,Object>> list);
	void updatePlanReview(List<Map<String,Object>> list);
	void updatePlanSent(List<Map<String,Object>> list);
	void updateUnfreeze(List<InfPpPlan> list);
	void updateRefuse(List<Map<String,Object>> list);
	void deletePlanCreate(List<InfPpPlan> list);
	/*
	 * 查询制定日期的所有数据
	 * */
	void updateSortNum(List<Map<String,Object>> list);
	/*
	 * 查询制定日期的所有数据
	 * */
	List<Integer> selectSortNumByPlanOnlineDate(String planOnlineDate);
	
	
	/*
	 * 查询数据通过id
	 * */
	InfPpPlan selectDateById(Integer id);
	/*
	 * 查询InfPpPlan数据集合通过id
	 * */
	List<InfPpPlan> selectDateListById(List<Integer> list);
	/*
	 * 通过sortNum查找id
	 * */
	Integer selectIdBySortNum(Integer sortNum);
	
	/*
	 * 对数据进行排序
	 * */
	void sortUpdateId(Map<String,Integer> map);
	/*
	 * 对数据进行新增
	 * */
	Integer planInsertCreate(InfPpPlan InfPpPlan);
	
	/*
	 * 更新计划表字段sortNum通过id
	 * */
	void updatePlanCreationSortNum(Integer Id);
	
	/*
	 * 查询inf_pp_plan表通过封装的Assist工具类
	 * */
	List<InfPpPlan> selectInfoPpPlan(Assist assist);
	
	
	/*
	 * 查询inf_pp_plan表的id
	 * */
	List<Integer> selectInfoPpPlanColUni(InfPpPlan InfPpPlan);
	
	/**
	 * 通过计划更新计划
	 **/
	void updateInfPpPlanById(Integer id);
	
	/**
	 * 查询inf_pp_plan表的最大上线日期
	 * 
	 */
	Date selectMaxOnlineDate();
	
	/**
	 * 设置上线日期
	 */
	Integer updateOnlineDate(@Param("date") Date[] date,@Param("orderNo")String orderNo);
	/**
	 * 查询产品定义中的数据是否存在
	 */
	@Select("select count(*) from tr_bas_pd_pl_route"
			+ " where part_no_version = #{poPartNoVersion}")
	Integer selectTrBasPdPlRouteByPartNoVersion(@Param("poPartNoVersion") String poPartNoVersion);
	
	/*
	 * 查询是否配置装车单
	 * **/
	@Select("select count(*) from pm_loading_list_head"
			+ " where part_no_version = #{poPartNoVersion}")
	Integer selectPmLoadingListHeadByPartNoVersion(@Param("poPartNoVersion") String poPartNoVersion);
	/*
	 * 查询是否配置bom
	 * **/
	@Select("select count(*) from tm_bas_bom"
			+ " where part_no_version = #{poPartNoVersion}")
	Integer selectTmBasBomByPartNoVersion(@Param("poPartNoVersion") String poPartNoVersion);
	
	void deleteMesPlanScheduleInfo(List<InfPpPlan> list);
	
	void deleteMesPlanScheduleInfoMap(List<Map<String,Object>> list);
	
}
